home *** CD-ROM | disk | FTP | other *** search
- TITLE MSDOS CONSOLE I/O ROUTINES
- .XLIST
- INCLUDE ASCII.DEF
- INCLUDE MSDOS2.DEF
- .LIST
-
- CODE SEGMENT BYTE PUBLIC
- ASSUME CS:CODE
- EXTRN UC:NEAR
- PUBLIC COUT,SCIN,CIN,CLRCO,CRLF,ERRORMSG,GETYORN
-
- ; CONSOLE I/O ROUTINES FOR MSDOS
-
- ; COUT = OUTPUT CHARACTER IN AL
- ;
- COUT PROC NEAR
- PUSH DX
- PUSH AX
- MOV DL,AL
- MOV AH,STD_CON_OUTPUT
- INT DOS
- POP AX
- POP DX
- RET
- COUT ENDP
-
- ; SCIN = SEE IF CONSOLE CHARACTER AVAILABLE
- ; RETURNS 'C'=1 IF NOT AVAILABLE
- ; ELSE RETURNS CHAR. IN AL
- ;
- SCIN PROC NEAR
- MOV AH,CON_INPUT_STATUS
- INT DOS
- CMP AL,0
- JNZ SHORT GOTSOME
- STC
- RET
- GOTSOME:
- CALL NEAR PTR CIN
- CLC
- RET
-
- SCIN ENDP
-
- ; CIN = GET CHARACTER FROM KEYBOARD
- ; EXIT: CHAR IN AL
- ;
- CIN PROC NEAR
- MOV AH,CON_INPUT_NO_ECHO
- INT DOS
- RET
- CIN ENDP
-
- ; CLRCO = CLEAR TYPE-AHEAD BUFFER
- ;
- CLRCO PROC NEAR
- CLRC1: CALL SCIN
- JNC CLRC1
- RET
- CLRCO ENDP
-
- ;
- ; CRLF = SEND CR + LF TO CONSOLE
- ;
- CRLF PROC NEAR
- MOV AL,CR
- CALL COUT
- MOV AL,LF
- CALL COUT
- RET
- CRLF ENDP
-
- ; ERRORMSG = WRITE MESSAGE TO STD. ERROR OUTPUT
- ; ENTRY: DS:DX POINTS TO MSG (ASCIIZ STRING)
- ; USES: AX,DX,FLAGS
- ;
- ERRORMSG PROC NEAR
- PUSH BX
- PUSH CX
- ERRMSG1: XCHG DX,BX
- MOV AL,[BX]
- XCHG DX,BX
- CMP AL,0
- JZ ERRMSG2
- MOV CX,1
- MOV AH,WRITE
- MOV BX,2
- INT DOS
- INC DX
- JMP ERRMSG1
- ERRMSG2:
- POP CX
- POP BX
- RET
- ERRORMSG ENDP
-
- ; GETYORN = GET 'Y' OR 'N' RESPONSE FROM CONSOLE
- ; RETURNS CHAR. ( Y OR N ) IN AX
-
- GETYORN PROC NEAR
- CALL CLRCO ;CLEAR TYPE-AHEAD
- NOTYN: CALL CIN ;GET CONSOLE CHAR.
- CALL UC ;MAKE UPPER-CASE
- CMP AL,'Y'
- JE GOTY
- CMP AL,'N'
- JNE NOTYN ;IF NOT Y OR N
- GOTY: PUSH AX
- CALL COUT
- CALL CRLF
- POP AX
- MOV AH,0 ;IN CASE USER DOES WORD COMPARISON
- RET
- GETYORN ENDP
-
- CODE ENDS
- END